早前我們在 Graylog 伺服器上完成了多種記錄輸入器的建立後,下一步就是開始將手上的各種裝置設定記錄往 Graylog 傳送。
第一步針對 Linux 伺服器上的記錄傳送設定,大部份 Linux 作業系統均有內建 rsyslog 或 syslog-ng 套件,因此設定起來相當簡單。
在設定之前需要確認目前是否已經安裝有 Syslog 相關套件,可以利用以下指令檢查,如果沒有可立即安裝。
Debian/Ubuntu (APT)
# 檢查是否安裝 Syslog 相關套件
dpkg -l | grep syslog
# 若檢查沒有找到,可進行安裝
apt install rsyslog
Red Hat/CentOS/Rocky(YUM/DNF)
# 檢查是否安裝 Syslog 相關套件
yum list | grep syslog
dnf list | grep syslog
# 若檢查沒有找到,可進行安裝
yum install rsyslog
dns install rsyslog
通用檢查方式
# 檢查是否安裝有 rsyslog 或 syslog-ng
which rsyslogd syslog-ng
當確認已經有安裝之後,還需要確認服務是否能夠正確運作,以 rsyslog 為例:
systemctl status rsyslog
執行後會顯示 rsyslog 的服務狀態,請確認 Active 欄位若顯示為 active (running)
,即表示服務目前正常運作。
檢視 rsyslog 服務狀態
接著即可進行設定,讓 rsyslog 將系統記錄傳送一份至 Graylog 伺服器。
使用文字編輯器開啟 rsyslog 設定檔,本系列文章將採用 nano (請依個人喜好選用編輯器即可)。
sudo nano /etc/rsyslog.conf
在編輯器開啟設定檔後,請直接捲動到最下面,加入一行:
*.* @192.168.1.51:30514
前方的 *.*
設定表示將所有 syslog 的記錄傳送一份至遠端伺服器,一個 @
符號表示採用 UDP 協定進行傳送 (若使用 @@
表示以 TCP 協定傳送),後方請串接 Graylog 的伺服器 IP,以及 Graylog 伺服器上的 Syslog UDP 輸入器設定的連接埠號碼。
確認設定正確後,請按下 Ctrl + X
接著按下 Y
,再按下 Enter
鍵即可存檔完成並退出編輯器。
設定 rsyslog 記錄傳送
要套用新的設定值,請執行以下指令:
sudo systemctl restart rsyslog
若重新啟動服務的指令沒有發生錯誤,即表示已經成功。
回到 Graylog 輸入器的頁面,找到 Syslog UDP 輸入器區塊,右方的 Network IO
如有數字變化,表示已經有資料進入。
記錄輸入器數量變化
如要確認收到的記錄內容,可以按下 Show received message
按鈕進入檢視詳細記錄,它會將這個輸入器所收到的記錄顯示出來。
檢視收到的記錄
rsyslog 服務重啟後,它會立即產生好幾筆相關的記錄,這對我們確認設定是否正確剛好提供的最好的驗證方式。
補充:
按下
Show received message
進入檢視畫面時,它會抓取現在時間的過去 26 小時及未來 26 小時 (共 52 小時) 的所有記錄進行顯示。
若有某些情況下 syslog 套件沒有自動產生記錄時,也可以手動產生一筆記錄以進行測試。
在 Linux 作業系統中有一個 logger
指令可以協助測試,用法如下:
logger -t mytest "This is a test message"
執行完成後,先確認本機的 syslog 檔案是否有出現:
grep "mytest" /var/log/syslog
如果有出現,表示 syslog 套件有正確收到。
搜尋測試記錄
如果要排除 syslog 套件直接對 Graylog 的 Syslog UDP 輸入器進行測試,可以採用以下指令進行驗證:
echo "<14>testserver syslog from jason tools" | nc -u -w 0 192.168.1.51 30514
回到 Graylog 伺服器 Syslog UDP 輸入器的 Show received message
檢視,即可找到經由剛剛的指令送出的測試記錄。
搜尋測試記錄
經由這些測試技巧,可以協助我們快速判斷問題是出在網路還是 syslog 套件的相關問題。